const  fs = require('fs');
const  path = require('path');

/**
 * 我们使用了 promise 以后发现确实方便很多了
 * 但是呢?
 * 
 * 2 async函数
    函数的返回值为promise对象
    promise对象的结果由async函数执行的返回值决定
    4.3 await表达式
    await右侧的表达式一般为Promise对象，但也可以是其他的值
    如果表达式是Promise对象，await返回的是promise成功的值
    如果表达式是其他值，直接将此值作为await的返回值
    注意：
    await必须写在async函数中，但async函数中可以没有await
    如果await的promise失败了，就会抛出异常，需要通过try...catch来捕获处理
 */
// async function fs(){
//   return "Hello";
// }

//fs();
// 返回的是一个promise对象
//console.log(fs());
function getReadFile(path){
  return new Promise((resolve,reject)=>{
    fs.readFile(path,'utf-8',(err,data)=>{
      if(err) reject(err);
      resolve(data);
    })
  })
};

async function hello(){
let result = await  getReadFile(path.join(__dirname,"../data/file3.txt"));
  console.log("--------------------"+result);
  
}

hello();